package short_semester.questionnaire_planet.service.fill;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import short_semester.questionnaire_planet.dao.MultiChoiceOptionDao;
import short_semester.questionnaire_planet.dao.QuestionnaireDao;
import short_semester.questionnaire_planet.dao.SingleChoiceOptionDao;
import short_semester.questionnaire_planet.pojo.*;

import java.util.List;

@Service
public class SignService {
    @Autowired
    SingleChoiceOptionDao singleChoiceOptionDao;
    
    @Autowired
    MultiChoiceOptionDao multiChoiceOptionDao;
    
    @Autowired
    QuestionnaireDao questionnaireDao;
    
    
    public boolean checkStore(Questionnaire questionnaire,List<SingleChoiceOption> singleChoiceOptions, List<MultiChoiceOption> multiChoiceOptions){

        System.out.println(questionnaire.getStore());
//        
//        if(questionnaire.getStore()!=null&&questionnaire.getStore()<=0){
//            return false;
//        }
        
        for (SingleChoiceOption option : singleChoiceOptions) {
            System.out.println("so: "+option.getStore());
            if(option.getStore()!=null&&option.getStore()<=0){
                return false;
            }
        }

        for (MultiChoiceOption option : multiChoiceOptions) {
            System.out.println("mo: "+option.getStore());
            if(option.getStore()!=null&&option.getStore()<=0){
                return false;
            }
        }
        return true;
    }
    
    public synchronized boolean getStore(Questionnaire questionnaire,List<SingleChoiceOption> singleChoiceOptions,List<MultiChoiceOption> multiChoiceOptions){

        Questionnaire questionnaire1 = questionnaireDao.getById(questionnaire.getId());
        if(questionnaire1.getStore()!=null&&questionnaire1.getStore()<=0)return false;
        
        
        for (SingleChoiceOption option : singleChoiceOptions) {
            SingleChoiceOption singleChoiceOption = singleChoiceOptionDao.getById(option.getId());
            if(singleChoiceOption.getStore()!=null&&singleChoiceOption.getStore()<=0)return false;
        }
        

        for (MultiChoiceOption option : multiChoiceOptions) {
            MultiChoiceOption multiChoiceOption = multiChoiceOptionDao.getById(option.getId());
            if(multiChoiceOption.getStore()!=null&&multiChoiceOption.getStore()<=0)return false;
        }
        updateStore(questionnaire,singleChoiceOptions,multiChoiceOptions);
        return true;
    }
    
    private void updateStore(Questionnaire questionnaire,List<SingleChoiceOption> singleChoiceOptions,List<MultiChoiceOption> multiChoiceOptions){
        System.out.println("enter update");
        if(questionnaire.getStore()!=null)
            questionnaireDao.sign(questionnaire.getId());
        
        for (SingleChoiceOption option : singleChoiceOptions) {
            if(option.getStore()!=null)
                singleChoiceOptionDao.signOption(option.getId());
        }
        for (MultiChoiceOption option : multiChoiceOptions) {
            if(option.getStore()!=null)
                multiChoiceOptionDao.signOption(option.getId());
        }
    }
}
